package com.xuelang.pipeline.app.project;

import com.xuelang.pipeline.client.common.request.PageParam;
import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.client.project.dto.ProjectDTO;
import com.xuelang.pipeline.client.project.dto.ProjectQuery;

import java.util.List;

/**
 * <p>项目服务接口</p>
 *
 * @author : yixin.lys
 * @date : 2024-09-03 10:43
 **/
public interface ProjectService {

    /**
     * 分页查询项目
     *
     * @param pageParam 查询条件
     * @return 分页结果
     */
    PageRecord<ProjectDTO> pageProjects(PageParam<ProjectQuery> pageParam);

    /**
     * 新增项目
     *
     * @param projectDTO 项目实体
     * @return 返回新增的项目ID
     */
    Integer createProject(ProjectDTO projectDTO);

    /**
     * 根据项目ID删除项目
     *
     * @param id 项目ID
     * @return 返回是否删除成功
     */
    boolean deleteProjectById(Integer id);

    /**
     * 更新项目信息
     *
     * @param projectDTO 项目实体
     * @return 返回是否更新成功
     */
    boolean updateProject(ProjectDTO projectDTO);

    /**
     * 根据项目ID查询项目
     *
     * @param id 项目ID
     * @return 返回对应的项目实体
     */
    ProjectDTO findProjectById(Integer id);

    /**
     * 根据项目code查询项目
     *
     * @param code 项目code
     * @return 返回对应的项目实体
     */
    ProjectDTO findProjectByCode(String code);

    /**
     * 查询所有项目
     *
     * @return 返回项目列表
     */
    List<ProjectDTO> findAllProjects();
    
}
